今天去了學校的秋徵,感想是覺得自己畢業就要失業了QQ(雖然能不能畢業也是個謎嗚嗚嗚嗚...)拜託誰來賜我高薪又能準時下班爽爽廢廢的工作 _(ˊxˋ 」_ )_
下方程式碼片段全部都是擷取自 Secure Code Warrior 線上安全程式培訓平台,因為練習互動時的題目多半不會只有單一個檔案,可能涉及多個檔案、資料夾及多處地方修改,因此我的文章主要是針對最主要的區塊做修改及說明,若有不好理解的地方非常抱歉也還請見諒,也可以實際上去 Secure Code Warrior 玩玩看,搭配著互動,會更有感的學習哦~
https://app.financeapp.com/v1/ companies?userid =73625
auto fullName = filename;
std::ifstream infile(fullName);
if (infile.good() == false)
return false;
std::string stringFromFile;
std::vector<LocationObject> tempSituation;
std::vector<std::string> trackValues;
while(std::getline (infile,stringFromFile)) {
if (infile.fail()) continue;
trackValues.push_back(stringFromFile);
if (trackValues.size() == DEFAULT_PARAMS_CNT)
{
if (!trackExists(trackValues.at(1)))
{
LocationObject obj;
obj.setCallSign(trackValues.at(1));
obj.setParameters(std::atoi(trackValues.at(2).data()),
std::atoi(trackValues.at(3).data()),
std::atof(trackValues.at(6).data()),
std::atoi(trackValues.at(5).data()),
std::atoi(trackValues.at(4).data()));
tempSituation.push_back(obj);
if (tempSituation.max_size() == tempSituation.size()) break;
}
trackValues.clear();
}
}
//程式碼片段擷取自 Secure Code Warrior 線上安全程式培訓平台
解釋:
輸入引數用於訪問讀取資料的檔案。 因此,可以訪問和讀取任何檔案並獲取其內容。 這允許攻擊者訪問敏感資訊
把錯誤區塊改成
auto fullName = filename;
fullName.append(FILE_PREFIX);
std::ifstream infile(fullName);
if (infile.good() == false) return false;
std::string stringFromFile;
std::vector<LocationObject> tempSituation;
while(std::getline (infile,stringFromFile)) {
if (infile.fail()) continue;
std::istringstream sstream(stringFromFile);
std::vector<std::string> trackValues;
for (std::string value; std::getline(sstream, value, DELIMITER);)
{
trackValues.push_back(value);
if (trackValues.size() > DEFAULT_PARAMS_CNT) break;
}
if (trackValues.size() != DEFAULT_PARAMS_CNT)
{
std::cout << "\nThe \""<< filename << "\" is corrupted. Can't load." <<std::endl;
return false;
}
if (trackExists(trackValues.at(1)))continue;
LocationObject obj;
obj.setCallSign(trackValues.at(1));
obj.setParameters(stoi(trackValues.at(2)),stoi(trackValues.at(3)),
stod(trackValues.at(6)),stoi(trackValues.at(5)),
stoi(trackValues.at(4)));
tempSituation.push_back(obj);
if (tempSituation.max_size() == tempSituation.size()) break;
}
//程式碼片段擷取自 Secure Code Warrior 線上安全程式培訓平台
解釋:
建議為檔案使用具有辨識性的名稱和自定義的內容格式。 因此,通過為檔案新增唯一的副檔名,並實現自定義的資料儲存格式與檢查機制,可以限制惡意行為者的存取。